package gui;

import processing.core.PApplet;


/**
 * Abstracte klasse waarvan de subklassen onderdelen zijn die op de GUI weergegeven worden.
 * 
 * @author Team Zilver
 * @version 1.0
 *
 */
public abstract class GUIObject {
	
	/**
	 * Geef de x-coordinaat van het linkerbovenpunt van het onderdeel op de GUI.
	 */
	protected int getXCoord() {
		return this.xCoord;
	}
	
	/**
	 * Stel de nieuwe x-coordinaat van dit onderdeel gelijk aan de gegeven x-coordinaat.
	 * 
	 * @param 	x
	 * 			De nieuwe x-coordinaat van het onderdeel
	 * @post	De nieuwe x-coordinaat van het onderdeel is gelijkgesteld aan de gegeven x-coordinaat.
	 * 			| new.getXCoord() == x
	 */
	protected void setXCoord(int x) {
		this.xCoord = x;
	}
	
	/**
	 * Variabele die de x-coordinaat van het linkerbovenpunt van het onderdeel op de GUI registreert.
	 */
	private int xCoord;
	
	/**
	 * Geef de y-coordinaat van het linkerbovenpunt van het onderdeel op de GUI.
	 */
	protected int getYCoord() {
		return this.yCoord;
	}
	
	/**
	 * Stel de nieuwe y-coordinaat van dit onderdeel gelijk aan de gegeven y-coordinaat.
	 * 
	 * @param 	y
	 * 			De nieuwe y-coordinaat van het onderdeel
	 * @post	De nieuwe y-coordinaat van het onderdeel is gelijkgesteld aan de gegeven y-coordinaat.
	 * 			| new.getYCoord() == y
	 */
	protected void setYCoord(int y) {
		this.yCoord = y;
	}
	
	/**
	 * Variabele die de y-coordinaat van het linkerbovenpunt van het onderdeel op de GUI registreert.
	 */
	private int yCoord;
	
	/**
	 * Geef de parent-applet terug.
	 */
	protected PApplet getParent() {
		return this.parent;
	}
	
	/**
	 * Stel de nieuwe parent-applet gelijk aan de gegeven parent-applet.
	 * 
	 * @param	parent
	 * 			De nieuwe parent-applet van dit onderdeel.
	 * @post	De nieuwe parent-applet van het onderdeel is gelijkgesteld aan de gegeven parent-applet.
	 * 			| new.getParent() == parent 			
	 */
	protected void setParent(PApplet parent) {
		this.parent = parent;
	}
	
	/**
	 * Variabele die de parent-applet registreert.
	 */
	private PApplet parent;
	
	/**
	 * Teken dit onderdeel op de GUI.
	 */
	public abstract void paint();
}
